package com.example.service;

import com.example.entity.User;

public interface UserService {
    /**
     * 发送注册验证码
     * @param phone 手机号
     * @return 是否发送成功
     */
    boolean sendRegisterCode(String phone);
    
    /**
     * 发送登录验证码
     * @param phone 手机号
     * @return 是否发送成功
     */
    boolean sendLoginCode(String phone);
    
    /**
     * 发送重置密码验证码
     * @param phone 手机号
     * @return 是否发送成功
     */
    boolean sendResetCode(String phone);

    /**
     * 验证码登录
     * @param phone 手机号
     * @param code 验证码
     * @return 用户信息
     */
    User loginByCode(String phone, String code);

    /**
     * 密码登录
     * @param phone 手机号
     * @param password 密码
     * @return 用户信息
     */
    User loginByPassword(String phone, String password);

    /**
     * 注册用户
     * @param user 用户信息
     * @return 是否注册成功
     */
    boolean register(User user);
    
    /**
     * 验证重置密码请求
     * @param phone 手机号
     * @param code 验证码
     * @return 是否验证成功
     */
    boolean verifyResetRequest(String phone, String code);
    
    /**
     * 重置密码
     * @param phone 手机号
     * @param newPassword 新密码
     * @return 是否重置成功
     */
    boolean resetPassword(String phone, String newPassword);
    
    /**
     * 检查手机号是否已被注册
     * @param phone 手机号
     * @return 是否已被注册
     */
    boolean checkPhoneExists(String phone);
    
    /**
     * 退出登录
     * @param userId 用户ID
     * @return 是否退出成功
     */
    boolean logout(Long userId);

    /**
     * 注销用户
     * @param phone 手机号
     * @param password 密码
     * @return 是否注销成功
     */
    boolean unregister(String phone, String password);
} 